﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;

namespace Mapping.Sistema
{
    public static class MappingPedidos
    {
        public static List<Entidades.Sistema.Pedido> ConsultarPedidos()
        {
            SqlCommand cmdPedidos = new SqlCommand();
            cmdPedidos.CommandText = "sp_ConsultarPedidos";
            cmdPedidos.CommandType = System.Data.CommandType.StoredProcedure;
            cmdPedidos.Connection = Servicios.Conexion.ObtenerInstancia().RetornarConexion();
            SqlDataReader drPedidos = cmdPedidos.ExecuteReader();
            List<Entidades.Sistema.Pedido> ColPedidos = new List<Entidades.Sistema.Pedido>();

            while (drPedidos.Read())
            {
                Entidades.Sistema.Pedido oPedido = new Entidades.Sistema.Pedido();
                
                oPedido.cod_pedido = Convert.ToInt32(drPedidos[0]);
                oPedido.estado = drPedidos[1].ToString();
                oPedido.fecha_entrega_pactada = Convert.ToDateTime(drPedidos[2]);

                SqlCommand cmd2Pedidos = new SqlCommand();
                cmd2Pedidos.CommandText = "sp_ConsultarDetallePedido";
                cmd2Pedidos.CommandType = System.Data.CommandType.StoredProcedure;
                cmd2Pedidos.Connection = Servicios.Conexion.ObtenerInstancia().RetornarConexion();
                cmd2Pedidos.Parameters.Add("@cod_pedido", System.Data.SqlDbType.Int).Value = oPedido.cod_pedido;
                SqlDataReader drDetellePedido = cmd2Pedidos.ExecuteReader();

                while (drDetellePedido.Read())
                {
                    Entidades.Sistema.DetallePedido oDetPedido = new Entidades.Sistema.DetallePedido();
                    Entidades.Sistema.Producto oProducto = new Entidades.Sistema.Producto();

                    oProducto.cod_producto = Convert.ToInt32(drDetellePedido[0]);
                    oProducto.nombre = drDetellePedido[1].ToString();
                    oDetPedido.producto = oProducto;
                    oDetPedido.cantidad = Convert.ToInt32(drDetellePedido[2]);
                    oDetPedido.estado = drDetellePedido[3].ToString();
                    oPedido.AgregarDetalle(oDetPedido);
                }

                ColPedidos.Add(oPedido);

            }
            return ColPedidos;
        }
    }
}
